/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Entidades;

import java.beans.PropertyChangeListener;
import java.beans.PropertyChangeSupport;
import java.io.Serializable;
import java.util.Collection;
import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.NamedQueries;
import javax.persistence.NamedQuery;
import javax.persistence.OneToMany;
import javax.persistence.Table;
import javax.persistence.Transient;

/**
 *
 * @author ivana
 */
@Entity
@Table(name = "proveedor")
@NamedQueries({
    @NamedQuery(name = "Proveedor.findAll", query = "SELECT p FROM Proveedor p"),
    @NamedQuery(name = "Proveedor.findByIdProveedor", query = "SELECT p FROM Proveedor p WHERE p.idProveedor = :idProveedor"),
    @NamedQuery(name = "Proveedor.findByRazonSocialProveedor", query = "SELECT p FROM Proveedor p WHERE p.razonSocialProveedor = :razonSocialProveedor"),
    @NamedQuery(name = "Proveedor.findByCajaPrevSocialProveedor", query = "SELECT p FROM Proveedor p WHERE p.cajaPrevSocialProveedor = :cajaPrevSocialProveedor"),
    @NamedQuery(name = "Proveedor.findByCuitProveedor", query = "SELECT p FROM Proveedor p WHERE p.cuitProveedor = :cuitProveedor"),
    @NamedQuery(name = "Proveedor.findByDireccionProveedor", query = "SELECT p FROM Proveedor p WHERE p.direccionProveedor = :direccionProveedor"),
    @NamedQuery(name = "Proveedor.findByNombreProveedor", query = "SELECT p FROM Proveedor p WHERE p.nombreProveedor = :nombreProveedor"),
    @NamedQuery(name = "Proveedor.findByApellidoProveedor", query = "SELECT p FROM Proveedor p WHERE p.apellidoProveedor = :apellidoProveedor"),
    @NamedQuery(name = "Proveedor.findByNumeroIngresosBrutosProveedor", query = "SELECT p FROM Proveedor p WHERE p.numeroIngresosBrutosProveedor = :numeroIngresosBrutosProveedor"),
    @NamedQuery(name = "Proveedor.findByNumeroInvProveedor", query = "SELECT p FROM Proveedor p WHERE p.numeroInvProveedor = :numeroInvProveedor"),
    @NamedQuery(name = "Proveedor.findByTelefono1", query = "SELECT p FROM Proveedor p WHERE p.telefono1 = :telefono1"),
    @NamedQuery(name = "Proveedor.findByTelefono2", query = "SELECT p FROM Proveedor p WHERE p.telefono2 = :telefono2"),
    @NamedQuery(name = "Proveedor.findByFechaalta", query = "SELECT p FROM Proveedor p WHERE p.fechaalta = :fechaalta"),
    @NamedQuery(name = "Proveedor.findByFechabaja", query = "SELECT p FROM Proveedor p WHERE p.fechabaja = :fechabaja")})
public class Proveedor implements Serializable {
    @Transient
    private PropertyChangeSupport changeSupport = new PropertyChangeSupport(this);
    private static final long serialVersionUID = 1L;
    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Basic(optional = false)
    @Column(name = "idProveedor")
    private Integer idProveedor;
    @Basic(optional = false)
    @Column(name = "razonSocialProveedor")
    private String razonSocialProveedor;
    @Basic(optional = false)
    @Column(name = "cajaPrevSocialProveedor")
    private String cajaPrevSocialProveedor;
    @Basic(optional = false)
    @Column(name = "cuitProveedor")
    private String cuitProveedor;
    @Basic(optional = false)
    @Column(name = "direccionProveedor")
    private String direccionProveedor;
    @Basic(optional = false)
    @Column(name = "nombreProveedor")
    private String nombreProveedor;
    @Basic(optional = false)
    @Column(name = "apellidoProveedor")
    private String apellidoProveedor;
    @Basic(optional = false)
    @Column(name = "numeroIngresosBrutosProveedor")
    private String numeroIngresosBrutosProveedor;
    @Basic(optional = false)
    @Column(name = "numeroInvProveedor")
    private String numeroInvProveedor;
    @Basic(optional = false)
    @Column(name = "telefono1")
    private int telefono1;
    @Basic(optional = false)
    @Column(name = "telefono2")
    private int telefono2;
    @Basic(optional = false)
    @Column(name = "fechaalta")
    private String fechaalta;
    @Basic(optional = false)
    @Column(name = "fechabaja")
    private String fechabaja;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "proveedor")
    private Collection<Contrato> contratoCollection;
    @JoinColumn(name = "idlocalidad", referencedColumnName = "idlocalidad")
    @ManyToOne(optional = false)
    private Localidad localidad;
    @JoinColumn(name = "idpais", referencedColumnName = "idpais")
    @ManyToOne(optional = false)
    private Pais pais;
    @JoinColumn(name = "idprovincia", referencedColumnName = "idprovincia")
    @ManyToOne(optional = false)
    private Provincia provincia;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "proveedor")
    private Collection<Proveedorproducto> proveedorproductoCollection;
    @OneToMany(cascade = CascadeType.ALL, mappedBy = "proveedor")
    private Collection<Remito> remitoCollection;

    public Proveedor() {
    }

    public Proveedor(Integer idProveedor) {
        this.idProveedor = idProveedor;
    }

    public Proveedor(Integer idProveedor, String razonSocialProveedor, String cajaPrevSocialProveedor, String cuitProveedor, String direccionProveedor, String nombreProveedor, String apellidoProveedor, String numeroIngresosBrutosProveedor, String numeroInvProveedor, int telefono1, int telefono2, String fechaalta, String fechabaja) {
        this.idProveedor = idProveedor;
        this.razonSocialProveedor = razonSocialProveedor;
        this.cajaPrevSocialProveedor = cajaPrevSocialProveedor;
        this.cuitProveedor = cuitProveedor;
        this.direccionProveedor = direccionProveedor;
        this.nombreProveedor = nombreProveedor;
        this.apellidoProveedor = apellidoProveedor;
        this.numeroIngresosBrutosProveedor = numeroIngresosBrutosProveedor;
        this.numeroInvProveedor = numeroInvProveedor;
        this.telefono1 = telefono1;
        this.telefono2 = telefono2;
        this.fechaalta = fechaalta;
        this.fechabaja = fechabaja;
    }

    public Integer getIdProveedor() {
        return idProveedor;
    }

    public void setIdProveedor(Integer idProveedor) {
        Integer oldIdProveedor = this.idProveedor;
        this.idProveedor = idProveedor;
        changeSupport.firePropertyChange("idProveedor", oldIdProveedor, idProveedor);
    }

    public String getRazonSocialProveedor() {
        return razonSocialProveedor;
    }

    public void setRazonSocialProveedor(String razonSocialProveedor) {
        String oldRazonSocialProveedor = this.razonSocialProveedor;
        this.razonSocialProveedor = razonSocialProveedor;
        changeSupport.firePropertyChange("razonSocialProveedor", oldRazonSocialProveedor, razonSocialProveedor);
    }

    public String getCajaPrevSocialProveedor() {
        return cajaPrevSocialProveedor;
    }

    public void setCajaPrevSocialProveedor(String cajaPrevSocialProveedor) {
        String oldCajaPrevSocialProveedor = this.cajaPrevSocialProveedor;
        this.cajaPrevSocialProveedor = cajaPrevSocialProveedor;
        changeSupport.firePropertyChange("cajaPrevSocialProveedor", oldCajaPrevSocialProveedor, cajaPrevSocialProveedor);
    }

    public String getCuitProveedor() {
        return cuitProveedor;
    }

    public void setCuitProveedor(String cuitProveedor) {
        String oldCuitProveedor = this.cuitProveedor;
        this.cuitProveedor = cuitProveedor;
        changeSupport.firePropertyChange("cuitProveedor", oldCuitProveedor, cuitProveedor);
    }

    public String getDireccionProveedor() {
        return direccionProveedor;
    }

    public void setDireccionProveedor(String direccionProveedor) {
        String oldDireccionProveedor = this.direccionProveedor;
        this.direccionProveedor = direccionProveedor;
        changeSupport.firePropertyChange("direccionProveedor", oldDireccionProveedor, direccionProveedor);
    }

    public String getNombreProveedor() {
        return nombreProveedor;
    }

    public void setNombreProveedor(String nombreProveedor) {
        String oldNombreProveedor = this.nombreProveedor;
        this.nombreProveedor = nombreProveedor;
        changeSupport.firePropertyChange("nombreProveedor", oldNombreProveedor, nombreProveedor);
    }

    public String getApellidoProveedor() {
        return apellidoProveedor;
    }

    public void setApellidoProveedor(String apellidoProveedor) {
        String oldApellidoProveedor = this.apellidoProveedor;
        this.apellidoProveedor = apellidoProveedor;
        changeSupport.firePropertyChange("apellidoProveedor", oldApellidoProveedor, apellidoProveedor);
    }

    public String getNumeroIngresosBrutosProveedor() {
        return numeroIngresosBrutosProveedor;
    }

    public void setNumeroIngresosBrutosProveedor(String numeroIngresosBrutosProveedor) {
        String oldNumeroIngresosBrutosProveedor = this.numeroIngresosBrutosProveedor;
        this.numeroIngresosBrutosProveedor = numeroIngresosBrutosProveedor;
        changeSupport.firePropertyChange("numeroIngresosBrutosProveedor", oldNumeroIngresosBrutosProveedor, numeroIngresosBrutosProveedor);
    }

    public String getNumeroInvProveedor() {
        return numeroInvProveedor;
    }

    public void setNumeroInvProveedor(String numeroInvProveedor) {
        String oldNumeroInvProveedor = this.numeroInvProveedor;
        this.numeroInvProveedor = numeroInvProveedor;
        changeSupport.firePropertyChange("numeroInvProveedor", oldNumeroInvProveedor, numeroInvProveedor);
    }

    public int getTelefono1() {
        return telefono1;
    }

    public void setTelefono1(int telefono1) {
        int oldTelefono1 = this.telefono1;
        this.telefono1 = telefono1;
        changeSupport.firePropertyChange("telefono1", oldTelefono1, telefono1);
    }

    public int getTelefono2() {
        return telefono2;
    }

    public void setTelefono2(int telefono2) {
        int oldTelefono2 = this.telefono2;
        this.telefono2 = telefono2;
        changeSupport.firePropertyChange("telefono2", oldTelefono2, telefono2);
    }

    public String getFechaalta() {
        return fechaalta;
    }

    public void setFechaalta(String fechaalta) {
        String oldFechaalta = this.fechaalta;
        this.fechaalta = fechaalta;
        changeSupport.firePropertyChange("fechaalta", oldFechaalta, fechaalta);
    }

    public String getFechabaja() {
        return fechabaja;
    }

    public void setFechabaja(String fechabaja) {
        String oldFechabaja = this.fechabaja;
        this.fechabaja = fechabaja;
        changeSupport.firePropertyChange("fechabaja", oldFechabaja, fechabaja);
    }

    public Collection<Contrato> getContratoCollection() {
        return contratoCollection;
    }

    public void setContratoCollection(Collection<Contrato> contratoCollection) {
        this.contratoCollection = contratoCollection;
    }

    public Localidad getLocalidad() {
        return localidad;
    }

    public void setLocalidad(Localidad localidad) {
        Localidad oldLocalidad = this.localidad;
        this.localidad = localidad;
        changeSupport.firePropertyChange("localidad", oldLocalidad, localidad);
    }

    public Pais getPais() {
        return pais;
    }

    public void setPais(Pais pais) {
        Pais oldPais = this.pais;
        this.pais = pais;
        changeSupport.firePropertyChange("pais", oldPais, pais);
    }

    public Provincia getProvincia() {
        return provincia;
    }

    public void setProvincia(Provincia provincia) {
        Provincia oldProvincia = this.provincia;
        this.provincia = provincia;
        changeSupport.firePropertyChange("provincia", oldProvincia, provincia);
    }

    public Collection<Proveedorproducto> getProveedorproductoCollection() {
        return proveedorproductoCollection;
    }

    public void setProveedorproductoCollection(Collection<Proveedorproducto> proveedorproductoCollection) {
        this.proveedorproductoCollection = proveedorproductoCollection;
    }

    public Collection<Remito> getRemitoCollection() {
        return remitoCollection;
    }

    public void setRemitoCollection(Collection<Remito> remitoCollection) {
        this.remitoCollection = remitoCollection;
    }

    @Override
    public int hashCode() {
        int hash = 0;
        hash += (idProveedor != null ? idProveedor.hashCode() : 0);
        return hash;
    }

    @Override
    public boolean equals(Object object) {
        // TODO: Warning - this method won't work in the case the id fields are not set
        if (!(object instanceof Proveedor)) {
            return false;
        }
        Proveedor other = (Proveedor) object;
        if ((this.idProveedor == null && other.idProveedor != null) || (this.idProveedor != null && !this.idProveedor.equals(other.idProveedor))) {
            return false;
        }
        return true;
    }

    @Override
    public String toString() {
        return "Entidades.Proveedor[idProveedor=" + idProveedor + "]";
    }

    public void addPropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.addPropertyChangeListener(listener);
    }

    public void removePropertyChangeListener(PropertyChangeListener listener) {
        changeSupport.removePropertyChangeListener(listener);
    }

}
